#ifndef FILESYSTEM_H
#define FILESYSTEM_H


#include "Framework/Prerequisites.h"


namespace tyro
{
	namespace IO
	{
		class IFileSystem
		{
		public:
			IFileSystem(){}

			virtual IFile* Open(const char* filename, bool read = true) const = 0;
			virtual unsigned int Read(IFile* file, char*& buffer, unsigned int bytesToRead, bool allocate) const = 0;
			virtual unsigned int Write(IFile* file, char*& buffer, unsigned int bytesToWrite) const = 0;
			virtual void Close(IFile* file) const = 0;

			virtual bool Create(const char* const fileName) const = 0;
			virtual bool Delete(const char* const fileName) const = 0;
			virtual bool Append(const char* fileName, const char* const text, ...) const = 0;
			virtual bool Exists(const char* const fileName) const = 0;


			virtual UINT_32 GetFileLength(const char* const fileName) const = 0;

		private:
			
		};
	}
}


#endif